www.gusucode.com > MATLAB+神经网络30个案例分析》程序和数据 > 源程序/案例3 遗传算法优化BP神经网络-非线性函数拟合/fun.m
function error = fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn) %该函数用来计算适应度值 %x input 个体 %inputnum input 输入层节点数 %outputnum input 隐含层节点数 %net input 网络 %inputn input 训练输入数据 %outputn input 训练输出数据 %error output 个体适应度值 %提取 w1=x(1:inputnum*hiddennum); B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum); w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum); B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum); net=newff(inputn,outputn,hiddennum); %网络进化参数 net.trainParam.epochs=20; net.trainParam.lr=0.1; net.trainParam.goal=0.00001; net.trainParam.show=100; net.trainParam.showWindow=0; %网络权值赋值 net.iw{1,1}=reshape(w1,hiddennum,inputnum); net.lw{2,1}=reshape(w2,outputnum,hiddennum); net.b{1}=reshape(B1,hiddennum,1); net.b{2}=B2; %网络训练 net=train(net,inputn,outputn); an=sim(net,inputn); error=sum(abs(an-outputn));